package com;


import com.fz.entity.Book;
import com.fz.entity.Teacher;
import com.fz.entity.User;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;



/**
 * Created by webrx on 2017-09-09.
 */
public class Demo {
@Test
    public void cc(){

    ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    //在applicationContext.xml中只要lazy-init="true"，就代表懒惰，不实例化对象就不操作
    //如果是false，哪怕只写上面一句话也会执行有参构造和初始化


    //如果启用的是单例设计模式，无论你实例化多少次，只执行一次构造和初始化  scope="singleton"
    //如果启用的是多例设计模式，你实例化几次，他执行几次构造和初始化    scope="prototype"
    User u1=ctx.getBean(User.class);
    ctx.close();
    /*
    User u=ctx.getBean(User.class);
        ctx.close();
    */
    }


    @Test
    public void zidongzhuangpei(){
        ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        //这个东西有三种写法，
        // 还可以这样Teacher t=(Teacher)ctx.getBean("teacher");
        //还可以这样Teacher t=ctx.getBean("teacher",Teacher.class);
       Teacher t=ctx.getBean(Teacher.class);
        //System.out.println(t.getBook().getName()+"--"+t.getName());
       /* Teacher t1=ctx.getBean("tt",Teacher.class);

        System.out.println(t1.getBook().getName()+"--"+t1.getName());*/
        ctx.close();
    }

    @Test
    public void zhujie(){
        ClassPathXmlApplicationContext f=new ClassPathXmlApplicationContext("applicationContext.xml");
        //由于这次采用注解的方式，没有具体的名字，所以单独这样写会报错的
        //但是在Book.java中加个注解操作才行

        //User u=f.getBean(User.class);
       // System.out.println(u);
        Book b=f.getBean("bok",Book.class);
        System.out.println(b);
        System.out.println(b.getTeacher());
        f.close();
    }
}
